package com.csnf.dao;

import com.csnf.entity.User;
import com.csnf.util.JdbcUtil;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class UserDao {

    /**
     * 全部用户信息
     * @return
     * @throws SQLException
     */
    public List<User> getAll() throws Exception {
        String sql = "select user_id,user_name,user_nickname from user";
        Connection conn = JdbcUtil.getConnection();
        PreparedStatement ps = JdbcUtil.getPreparedStatement(conn, sql);
        ResultSet rs = ps.executeQuery();
        List<User> userList = new ArrayList<>();
        while(rs.next()) {
            User user = null;
            user = JdbcUtil.invokeObject(rs, User.class);
            userList.add(user);
        }
        JdbcUtil.close(rs,ps,conn);  //关闭资源
        return userList;
    }

    /**
     * 通过昵称查询用户信息
     * @param nickName 昵称
     * @return 用户列表
     * @throws SQLException
     */
    public List<User> getUserByNickName(String nickName) throws Exception {
        Connection conn = JdbcUtil.getConnection();
        String sql = "select user_id,user_name,user_nickname from user where user_nickname like concat('%',?,'%')";
        PreparedStatement ps = JdbcUtil.getPreparedStatement(conn, sql, nickName);
        ResultSet rs = ps.executeQuery();
        List<User> userList = new ArrayList<>();
        while(rs.next()) {
            User user = null;
            user = JdbcUtil.invokeObject(rs, User.class);
            userList.add(user);
        }
        JdbcUtil.close(rs,ps,conn); //关闭资源
        return userList;
    }

    /**
     * 通过id查询用户信息
     */
    public User getUserById(Integer user_id) throws Exception {
        Connection conn = JdbcUtil.getConnection();
        String sql = "select user_id,user_name,user_nickname from user where user_id = ?";
        PreparedStatement ps = JdbcUtil.getPreparedStatement(conn, sql, user_id);
        ResultSet rs = ps.executeQuery();
        User user = null;
        if(rs.next()){
            user = JdbcUtil.invokeObject(rs, User.class);
        }
        JdbcUtil.close(rs,ps,conn); //关闭资源
        return user;
    }
    public Boolean updateUser(User user) throws Exception {
        Connection conn = JdbcUtil.getConnection();
        String sql = "update user set user_name=?,user_nickname=? where user_id=?";
        PreparedStatement ps = JdbcUtil.getPreparedStatement(conn, sql,
                                                             user.getUser_name(),
                                                             user.getUser_nickname(),
                                                             user.getUser_id());
        int i = ps.executeUpdate();
        JdbcUtil.close(ps,conn);
        return i>0;
    }
}
